//
//  ViewController.m
//  buttons
//
//  Created by 楼楚 on 15/9/24.
//  Copyright © 2015年 Chu Lou. All rights reserved.
//

#import "ViewController.h"
//枚举类型本质上就是整数 定义的时候 如果只指定了第一个数值 后续的数值会依次递增
//枚举类型是解决魔法数字比较常用的手段
typedef enum {
    kMovingDirTop = 10,
    kMovingDirBottom,
    kMovingDirLeft,
    kMovingDirRight,
}kMovingDir;

#define kMovingDelta 20.0f


@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIButton *iconButton;

@end

@implementation ViewController





////向上移动
//- (IBAction)top {
////    修改位置可以通过frame
//// 在oc中不允许直接修改对象的结构体属性 的成员
////    但是允许修改结构体属性的成员
////    self.iconButton.frame.origin.y
////    如果要修改对象的结构体属性，需要三个步骤
////    1.取出frame
//    CGRect frame = self.iconButton.frame;
////    2.修改结构体的成员
//    frame.origin.y -= 20;
////    3.重新为对象的结构体属性赋值
//    self.iconButton.frame = frame;
//}
//
////向下移动
//- (IBAction)bottom {
//       //    1.取出frame
//    CGRect frame = self.iconButton.frame;
//    //    2.修改结构体的成员
//    frame.origin.y += 20;
//    //    3.重新为对象的结构体属性赋值
//    self.iconButton.frame = frame;
//}
//
////向左移动
//- (IBAction)left {
//  
//    //    1.取出frame
//    CGRect frame = self.iconButton.frame;
//    //    2.修改结构体的成员
//    frame.origin.x -= 20;
//    //    3.重新为对象的结构体属性赋值
//    self.iconButton.frame = frame;
//}
//
////向右移动
//- (IBAction)right {
//    
//    //    1.取出frame
//    CGRect frame = self.iconButton.frame;
//    //    2.修改结构体的成员
//    frame.origin.x += 20;
//    //    3.重新为对象的结构体属性赋值
//    self.iconButton.frame = frame;
//}



/*
 1.基本功能实现
 2.代码优化
 3.尽量让重复的代码只出现一次
*/
- (IBAction)move:(UIButton *)button {
    
//    1.取出frame
      CGRect frame = self.iconButton.frame;
//      2.根据按钮的类型tag 判断移动的方向 再更改结构体的成员
//    magic number 魔法数字 可读性不好
    switch (button.tag) {
        case kMovingDirTop: //top
            frame.origin.y -= kMovingDelta;
            break;
        case kMovingDirBottom: //bottom
            frame.origin.y += kMovingDelta;
            break;
        case kMovingDirLeft: // left
            frame.origin.x -= kMovingDelta;
            break;
        case kMovingDirRight: // right
            frame.origin.x += kMovingDelta;
            break;

       
    }
    //    //    3.重新为对象的结构体属性赋值
    
    self.iconButton.frame = frame;
    
}





- (IBAction)zoom:(UIButton *)button {
    //    用frame 来调整按钮大小
    //    1.取出frame
    CGRect frame = self.iconButton.bounds;
    //    2.判断点了哪个按钮
    if (button.tag) {
        frame.size.width +=20;
        frame.size.height +=20;
        
    } else{
        frame.size.width -=20;
        frame.size.height -=20;
        
    }
    
    //首尾式动画
//     1）.准备开始一个动画
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:1.0];//设置动画执行的时长
    //    3.重新设置bounds
    self.iconButton.bounds = frame;
//    2）.提交动画
    [UIView commitAnimations];

}
//也可以通过center修改位置
////通过frame 放大 缩小
//- (IBAction)zoom:(UIButton *)button {
////    用frame 来调整按钮大小
////    1.取出frame
//    CGRect frame = self.iconButton.frame;
////    2.判断点了哪个按钮
//    if (button.tag) {
//        frame.size.width +=20;
//        frame.size.height +=20;
//        
//    } else{
//        frame.size.width -=20;
//        frame.size.height -=20;
//        
//    }
////    3.重新设置frame
//    
//    self.iconButton.frame = frame;
//    
//    
//}





@end
